package ace.module.account.api.model.input;

import ace.module.account.api.enums.IamAccountProfileRegisterSourceFromEnum;
import ace.module.account.api.enums.IamAccountProfileSexEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.PositiveOrZero;
import jakarta.validation.constraints.Size;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(title = "账户基础参数")
public class IamAccountCommonInfoInput implements Serializable {

  /**
   * 是否需要更改密码
   */
  @Schema(title = "是否需要更改密码")
  private Boolean passwordChangeRequired;

  @Max(value = 2)
  @Min(value = 1)
  @Schema(title = "状态", description = "1-正常 2-锁定")
  private Integer status;

  /**
   * 头像
   */
  @Size(max = 255)
  @Schema(title = "头像", description = "")
  private String avatar;

  /**
   * 生日时间戳
   */
  @PositiveOrZero
  @Schema(title = "生日时间戳", description = "毫秒")
  private Long birthday;

  /**
   * {@link IamAccountProfileSexEnum}
   */
  @Max(value = 3)
  @Min(value = 1)
  @Schema(title = "性别", description = "1-未知 2-男性 3-女性")
  private Integer sex;

  /**
   * 个性签名
   */
  @Size(max = 255)
  @Schema(title = "个性签名", description = "")
  private String signature;

  @Size(max = 255)
  @Schema(title = "昵称", description = "")
  private String nickName;

  @Size(max = 255)
  @Schema(title = "真实姓名", description = "")
  private String realName;

  /**
   * 注册来源 {@link IamAccountProfileRegisterSourceFromEnum}
   */
  @Max(value = 5)
  @Min(value = 0)
  @Schema(title = "注册来源", description = "1-未知 2-电脑浏览器端 3-手机浏览器端 4-微信公众号 5-微信小程序 6-ios 7-android")
  private Integer registerSourceFrom;

}
